/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BL;

import BE.BEInterface;
import BE.BEPerfil;
import DA.DAPerfil;
import java.sql.SQLException;
import java.util.*;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


/**
 *
 * @author hunter2409
 */
public class BLPerfil {
    
    private ArrayList<BEPerfil> lstPerfiles;
    private DAPerfil dtaPerfil;
    private ArrayList<BEInterface> interfacesMantenimiento;
    private ArrayList<BEInterface> interfacesProcesamiento;
    private ArrayList<BEInterface> interfacesReporte;
    private ArrayList<BEInterface> interfacesSeguridad;
    
    public BLPerfil()
    {
        this.lstPerfiles= new ArrayList<BEPerfil>();
        this.interfacesMantenimiento= new ArrayList<BEInterface>();
        this.interfacesProcesamiento = new ArrayList<BEInterface>();
        this.interfacesReporte = new ArrayList<BEInterface>();
        this.interfacesSeguridad = new ArrayList<BEInterface>();
        //cargarListaSistema();
        this.dtaPerfil = new DAPerfil();
        
    }
    public ArrayList<BEPerfil> getLstPerfiles() {
        return lstPerfiles;
    }

    public void setLstPerfiles(ArrayList<BEPerfil> lstPerfiles) {
        this.lstPerfiles = lstPerfiles;
    }

    public DAPerfil getDtaPerfil() {
        return dtaPerfil;
    }

    public void setDtaPerfil(DAPerfil dtaPerfil) {
        this.dtaPerfil = dtaPerfil;
    }

    
    
    public void cargar()
    {
        this.setLstPerfiles(getDtaPerfil().cargarDatos());
    }
    
    public String guardar(BEPerfil objPerfil) throws SQLException
    {
        return getDtaPerfil().instertar(objPerfil);
    }

    public void cargarListaSistema() {
        
        setInterfacesMantenimiento(dtaPerfil.cargarInterfaces("Mantenimiento"));
        setInterfacesProcesamiento(dtaPerfil.cargarInterfaces("Procesamiento"));
        setInterfacesReporte(dtaPerfil.cargarInterfaces("Reportes"));
        setInterfacesSeguridad(dtaPerfil.cargarInterfaces("Seguridad"));

          
    
    }
    
    
    public void cargarLista(JList lista, ArrayList<BEInterface> Interfaces)
    {
        DefaultListModel listModel= new DefaultListModel();
        
        if (Interfaces!=null)
        {
            for(BEInterface i:Interfaces) listModel.addElement(i.getNombre());
 
        }
        
        lista.setModel(listModel);
    }


    public BEInterface buscarNombreInterface(String nombre)
    {
        for (BEInterface i:interfacesMantenimiento)
            if(i.getNombre().equals(nombre)) return i;

        for (BEInterface i:interfacesProcesamiento)
            if(i.getNombre().equals(nombre)) return i;

        for (BEInterface i:interfacesReporte)
            if(i.getNombre().equals(nombre)) return i;

        for (BEInterface i:interfacesSeguridad)
            if(i.getNombre().equals(nombre)) return i;

        return null;
    }


    public ArrayList<BEInterface> getInterfacesMantenimiento() {
        return interfacesMantenimiento;
    }

    public void setInterfacesMantenimiento(ArrayList<BEInterface> interfacesMantenimiento) {
        this.interfacesMantenimiento = interfacesMantenimiento;
    }

    public ArrayList<BEInterface> getInterfacesProcesamiento() {
        return interfacesProcesamiento;
    }

    public void setInterfacesProcesamiento(ArrayList<BEInterface> interfacesProcesamiento) {
        this.interfacesProcesamiento = interfacesProcesamiento;
    }

    public ArrayList<BEInterface> getInterfacesReporte() {
        return interfacesReporte;
    }

    public void setInterfacesReporte(ArrayList<BEInterface> interfacesReporte) {
        this.interfacesReporte = interfacesReporte;
    }

    public ArrayList<BEInterface> getInterfacesSeguridad() {
        return interfacesSeguridad;
    }

    public void setInterfacesSeguridad(ArrayList<BEInterface> interfacesSeguridad) {
        this.interfacesSeguridad = interfacesSeguridad;
    }

    public BLModelo limpiarTabla(JTable tblDatosPerfiles) {
        
        BLModelo modelo = new BLModelo();
        
        tblDatosPerfiles.setModel(modelo);

        modelo.addColumn("Id Perfil");
        modelo.addColumn("Nombre");
        modelo.addColumn("Descripcion");
        modelo.addColumn("Estado");
        
        return modelo;

    }

    public void llenarTabla(JTable tblDatosPerfiles) {
        
        BLModelo modelo = limpiarTabla(tblDatosPerfiles);
           
        //System.out.println(lstPerfiles.size());
        
        for(BEPerfil p:lstPerfiles)
        {
            Object [] fila = new Object[4];
            fila[0]= p.getIdPerfil();
            fila[1]= p.getNombre();
            fila[2]=p.getDescripcion();
            fila[3]= p.getEstado();
            modelo.addRow(fila);
                   
        }
    }

    public void llenarTabla(JTable tblDatosPerfiles, int codigo, String nombre) {
        
        DefaultTableModel modelo = limpiarTabla(tblDatosPerfiles);;
        
                
         //System.out.println(lstPerfiles.size());
        
        for(BEPerfil p:lstPerfiles)
        {
            Object [] fila = new Object[4];
            fila[0]= p.getIdPerfil();
            fila[1]= p.getNombre();
            fila[2]=p.getDescripcion();
            fila[3]= p.getEstado();
            
            if (filtrar(codigo,nombre,p)) modelo.addRow(fila);
                   
        }
    }

    private boolean filtrar(int id, String nombre, BEPerfil perfil) {
       
        if ((id==-1)&&(nombre.equals(""))) return true;
        if ((id==-1)&&(nombre.equals(perfil.getNombre()))) return true;
        if ((id==perfil.getIdPerfil())||(nombre.equals(perfil.getNombre()))) return true;
        
        
        
        return false;
    }

    public BEPerfil buscarNombrePerfil(String nomnbre) {
        
        for (BEPerfil p:lstPerfiles)
        {
            if (p.getNombre().equals(nomnbre)) return p;
        }
        
        return null;
    }

    public String actualizar(BEPerfil auxPerfil) {
       return dtaPerfil.actualizar(auxPerfil);
    }

    public BEPerfil buscarIdPerfil(int idPerfil) {
        
        for (BEPerfil p:lstPerfiles)
        {
            if (p.getIdPerfil()==idPerfil) return p;
        }
        
        return null;
    }

    
    
    
    
    
    
}
